import productSearchApi from '@/lib/product/api/productSearchApi' import { create } from 'xmlbuilder' import _ from 'lodash-contrib' import { createSlug } from '@/core/utils/slug' export async function getServerSideProps({ query, res }) { const baseUrl = process.env.SELF_HOST + '/shop/product/' const { page } = query const limit = 2500 const queries = { limit, page: page.replace('.xml', '') } const products = await productSearchApi({ query: _.toQuery(queries) }) const sitemap = create('urlset', { encoding: 'utf-8' }).att( 'xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9' ) const date = new Date() products.response.products.forEach((product) => { const url = sitemap.ele('url') url.ele('loc', createSlug(baseUrl, product.name, product.id)) url.ele('lastmod', date.toISOString().slice(0, 10)) url.ele('changefreq', 'weekly') url.ele('priority', '0.8') }) res.setHeader('Content-Type', 'text/xml') res.write(sitemap.end()) res.end() return { props: {} } } export default function SitemapProducts() { return null }